﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using Conexion;
using Autorizacion_facturas_caja.Vacaciones;
using System.IO;

namespace Autorizacion_facturas_caja
{
    public partial class frmVacaciones_Validacion : Form
    {
        #region declaraciones
        Logs log = new Logs();
        objRH obj = new objRH();
        public objRH obj2 = new objRH();
        objVacaciones obj1 = new objVacaciones();
        public objVacaciones obj3 = new objVacaciones();
        public objVacaciones obj4 = new objVacaciones();
        objDiasInhabiles objD = new objDiasInhabiles();
        objDiasInhabiles objD2 = new objDiasInhabiles();
        Manejador_Calcula_Fecha MCQ = new Manejador_Calcula_Fecha();
        Manejador_Vacaciones MV = new Manejador_Vacaciones();
        Manejador_Dias_Inhabiles MDI = new Manejador_Dias_Inhabiles();
        ClsConexion conexion = new ClsConexion();
        #endregion

        #region FUNCIONES
        public int entra;
        public int dias_prog;
        public frmVacaciones_Validacion(objRH obj, objVacaciones obj1, int bandera)
        {
            InitializeComponent();
            entra = bandera;
            //dTPFin.Enabled = false;
            obj2 = obj;
            obj3 = obj1;

            dias_prog = obj3.Dias_Programados;
            btnSustituir.Visible = false;
            btnPagar.Visible = false;
            btnCalcular.Visible = false;
            btnAceptar.Visible = false;
            btnSuplente.Visible = false;
            btnAprobado.Visible = false;
            groupBox5.Visible = false;
            groupBox6.Visible = false;
            groupBox3.Visible = false;
            groupBox4.Visible = false;
            switch (bandera)
            {
                case 1:
                    btnSuplente.Visible = true;
                    btnAprobado.Visible = true;
                    groupBox3.Visible = true;
                    groupBox4.Visible = true;
                    btnAceptar.Visible = true;
                    llenar();
                    break;
                case 0:
                    groupBox3.Visible = true;
                    groupBox4.Visible = true;
                    btnSustituir.Visible = true;
                    groupBox3.Enabled = false;
                    groupBox4.Enabled = false;
                    dTPInicio.Enabled = false;
                    llenar();
                    llenartodo();
                    break;
                case 2:
                    btnPagar.Visible = true;
                    btnCalcular.Visible = true;
                    groupBox5.Visible = true;
                    groupBox6.Visible = true;
                    llenar();
                    break;
                case 3:
                    btnCalcular.Visible = true;
                    btnPagar.Visible = true;
                    groupBox5.Visible = true;
                    groupBox6.Visible = true;
                    llenar();
                    llenartodo();
                    break;
                case 4:
                    btnPagar.Visible = true;
                    btnCalcular.Visible = true;
                    groupBox5.Visible = true;
                    groupBox6.Visible = true;
                    txbDiasPagar.Enabled = false;
                    llenar4();
                    break;
            }

        }

        //llena los campos de la forma dependiendo de la bandera que reciba
        private void llenar()
        {

            if (entra == 2)
            {
                obj = MV.ConsultaSueldoDiario(obj2.Id_Empleado);
                txbMontoDiario.Text = obj.Salario_dia;
            }

            obj4 = MV.TiempoEmpleado(obj2.Id_Empleado);
            label6.Text = obj2.Nombre + " " + obj2.Apellidos;
            label7.Text = obj2.Puesto;
            label8.Text = obj4.Antigüedad.ToString();
            label20.Text = obj4.Prima_Vacacional.ToString();
            label9.Text = obj4.Dias_Correspondientes.ToString();
            label10.Text = obj4.Dias_Restantes.ToString();
            label11.Text = dias_prog.ToString();
            label22.Text = obj4.Periodo.ToString();
        }
        //llena los campos de la forma dependiendo de la bandera que reciba
        private void llenar4()
        {
            DataTable datos = MV.Datos_DiasAcoumulados(obj2.Id_Empleado);
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj.Nombre_completo = (Info[0].ToString().Trim());
            obj.Nombre_Sucursal = (Info[1].ToString().Trim());
            obj.Departamento = (Info[2].ToString().Trim());
            obj.Nombre_empresa = (Info[3].ToString().Trim());
            obj.Puesto = (Info[4].ToString().Trim());
            obj1.Dias_Acomulados = Convert.ToInt16(Info[5].ToString().Trim());
            obj1.Monto_Dia = (Info[6].ToString().Trim());
            obj1.Monto_Dias_Pagar = (Info[7].ToString().Trim());
            obj1.Periodo = Convert.ToInt16(Info[8].ToString().Trim());
            obj1.Antigüedad = Convert.ToInt16(Info[9].ToString().Trim());
            obj1.Monto_Prima = (Info[10].ToString().Trim());
            obj1.Dias_Correspondientes = Convert.ToInt16(Info[11].ToString().Trim());
            obj1.Dias_Restantes = Convert.ToInt16(Info[12].ToString().Trim());
            obj1.Dias_Programados = Convert.ToInt16(Info[13].ToString().Trim());
            obj1.Id_Vacaciones = Convert.ToInt16(Info[14].ToString().Trim());
            label6.Text = obj.Nombre_completo;
            label5.Text = obj.Nombre_Sucursal;
            label13.Text = obj.Departamento;
            label12.Text = obj.Nombre_empresa;
            label7.Text = obj.Puesto;
            label8.Text = obj1.Antigüedad.ToString();
            label20.Text = obj1.Monto_Prima;
            label9.Text = obj1.Dias_Correspondientes.ToString();
            label10.Text = obj1.Dias_Restantes.ToString();
            label11.Text = dias_prog.ToString();
            label22.Text = obj1.Periodo.ToString();
            txbDiasPagar.Text = obj1.Dias_Acomulados.ToString();
            txbMontoDiario.Text = obj1.Monto_Dia.ToString();
            txbMontoTotal.Text = obj1.Monto_Dias_Pagar.ToString();
        }
        //llena los campos de la forma dependiendo de la bandera que reciba
        private void llenartodo()
        {

            if (entra == 0)
            {
                obj1 = MV.DatosAsignacionVac(obj3.Id_Vacaciones);
                dTPInicio.Text = obj1.Fecha_Inicio_Vacaciones.ToString();
                dTPFin.Text = obj1.Fecha_fin_vacaciones.ToString();
                txBDiasSoli.Text = obj1.Dias_Solicitados.ToString();
                obj1.Nombre_Aprobador = MV.NombreEmpleado(obj1.Id_Aprobador);
                txbAprobado.Text = obj1.Nombre_Aprobador;
                obj1.Nombre_Suplente = MV.NombreEmpleado(obj1.Id_Suplente);
                txbSuplente.Text = obj1.Nombre_Suplente;
                cBAutorizado.Checked = obj1.Autorizacion;
                txBComentario.Text = obj1.Comentario;
            }
            else if (entra == 3)
            {
                txbDiasPagar.Text = obj3.Dias_Pagar.ToString();
                txbMontoDiario.Text = obj3.Monto_Dia;
                txbMontoTotal.Text = obj3.Monto_Total;
                txbJustificacion.Text = obj3.Justificacion;
                obj4.Dias_Pagar = obj3.Dias_Pagar;
                dateTimePicker1.Value = obj3.Fecha_Pago;
            }
        }
        //salta los dias domingos y los dias inhabiles
        private void CalculaFechas()
        {

            obj3.Fecha_Inicio_Vacaciones = dTPInicio.Value;
            obj3.Fecha_fin_vacaciones = dTPFin.Value;

            string dia;
            int cont = 0;
            int numdias;
            int numdiasInHa;
            DateTime fecha1;
            DateTime fecha2;
            string fecha3;
            string fecha4;

            fecha3 = obj3.Fecha_Inicio_Vacaciones.ToShortDateString();
            fecha4 = obj3.Fecha_fin_vacaciones.ToShortDateString();

            fecha1 = Convert.ToDateTime(fecha3);
            numdias = Convert.ToInt32(txBDiasSoli.Text);
            obj3.Fecha_fin_vacaciones = fecha1.AddDays(numdias - 1);
            fecha2 = Convert.ToDateTime(fecha4);

            do
            {
                dia = fecha1.ToString("dddd");
                if (dia == "domingo") cont++;
                fecha1 = fecha1.AddDays(1);

            } while (fecha1 <= obj3.Fecha_fin_vacaciones);

            fecha2 = obj3.Fecha_fin_vacaciones.AddDays(cont);
            dia = fecha2.ToString("dddd");
            if (dia == "domingo") fecha2 = fecha2.AddDays(1);
            dia = fecha2.ToString("dddd");

            objD.Fecha_Media = obj3.Fecha_Inicio_Vacaciones;
            obj3.Fecha_fin_vacaciones = fecha2;
            do
            {
                objD = MCQ.ConsultaNumeroDI(objD.Fecha_Media, obj3.Fecha_fin_vacaciones);
                objD.Fecha_Media = obj3.Fecha_fin_vacaciones;
                numdiasInHa = objD.Dias_Inhabiles;
                obj3.Fecha_fin_vacaciones = obj3.Fecha_fin_vacaciones.AddDays(numdiasInHa);
                dia = obj3.Fecha_fin_vacaciones.ToString("dddd");
                if (dia == "domingo") obj3.Fecha_fin_vacaciones = obj3.Fecha_fin_vacaciones.AddDays(1);
                objD2 = MCQ.ConsultaNumeroDI(obj3.Fecha_fin_vacaciones, obj3.Fecha_fin_vacaciones);
                if (objD2.Dias_Inhabiles == 1)
                {
                    obj3.Fecha_fin_vacaciones = obj3.Fecha_fin_vacaciones.AddDays(1);
                    objD.Fecha_Media = obj3.Fecha_fin_vacaciones;
                }

            } while (numdiasInHa > 0);
            dTPFin.Value = obj3.Fecha_fin_vacaciones;
        }
        //limpia los campos llenados despues de guardar los datos
        private void limpiar()
        {
            txBDiasSoli.Text = "";
            txBDiasSoli.Text = "";
            txbSuplente.Text = "";
            cBAutorizado.Checked = false;
            txbAprobado.Text = "";
            txBComentario.Text = "";
        }
        //comprueba que no existan campos vacios
        private bool validar2()
        {
            bool val = true;
            if (txbDiasPagar.Text == "")
            {
                errorProvider1.SetError(txbDiasPagar, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbMontoTotal.Text == "")
            {
                errorProvider1.SetError(txbMontoTotal, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbMontoDiario.Text == "")
            {
                errorProvider1.SetError(txbMontoDiario, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbJustificacion.Text == "")
            {
                errorProvider1.SetError(txbJustificacion, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (val == false)
            {
                return false;
            }
            else { return val; }
        }
        //comprueba que no existan campos vacios
        private bool validar()
        {
            bool val = true;
            if (txBDiasSoli.Text == "")
            {
                errorProvider1.SetError(txBDiasSoli, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbSuplente.Text == "")
            {
                errorProvider1.SetError(txbSuplente, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbAprobado.Text == "")
            {
                errorProvider1.SetError(txbAprobado, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (val == false)
            {
                return false;
            }
            else { return val; }
        }

        //no se esta usando
        public bool ValidarS()
        {
            if (cBAutorizado.Checked == true && entra == 1)
            {
                Form1 login = new Form1();
                login.ShowDialog();
                if (conexion.Usuario != null) return true;
                else return false;
            }
            return true;
        }
        #endregion

        #region BOTONES
        //realiza las inserciones de los datos
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();

            if ((validar() == true) && (entra == 1))
            {
                if (cBAutorizado.Checked) obj1.Autorizacion = true;
                else obj1.Autorizacion = false;
                bool resp = MV.InsercionVacaciones(
                    obj3.Id_Vacaciones.ToString(),
                    DateTime.Now,
                    dTPInicio.Text.Trim(),
                    dTPFin.Text.Trim(),
                    obj1.Id_Aprobador.ToString(),
                    obj1.Id_Suplente.ToString(),
                    obj1.Autorizacion.ToString(),
                    txBDiasSoli.Text.Trim(),
                    "PROGRAMADA",
                    txBComentario.Text.Trim(),
                    1);

                if (resp == true)
                {
                    MessageBox.Show("VACACION GUARDADA", "AVISO");
                    //limpiar();
                    this.Close();

                    //log.Log("jorge :", "VACACIONES :", "Programa Vacaciones :" );

                    if (obj1.Autorizacion == true)
                    {
                        obj3.Id_Relacion_Vacaciones = MV.Max_Id(obj3.Id_Vacaciones, "VAC");
                        frmVacaciones_Reporte_Vacacion rep = new frmVacaciones_Reporte_Vacacion(obj2, obj3);
                        rep.ShowDialog();
                    }
                }
                else
                {
                    MessageBox.Show("ERROR AL GUARDAR", "ALERTA");
                }


            }
            else if ((validar() == true) && (entra == 0))
            {
                bool res = MV.ModificarVacaciones(
                    obj3.Id_Vacaciones.ToString(),
                    obj3.Fecha_Solicitud,
                    dTPInicio.Value,
                    dTPFin.Value,
                    obj1.Id_Aprobador.ToString(),
                    obj1.Id_Suplente.ToString(),
                    cBAutorizado.Checked.ToString(),
                    txBDiasSoli.Text.Trim(),
                    "CURSANDO",
                    txBComentario.Text.Trim(),
                    1);

                if (res == true)
                {
                    MessageBox.Show("VACACION GUARDADA", "AVISO");
                    limpiar();
                    this.Close();

                    obj3.Id_Relacion_Vacaciones = MV.Max_Id(obj3.Id_Vacaciones, "VAC");

                    frmVacaciones_Reporte_Vacacion rep = new frmVacaciones_Reporte_Vacacion(obj2, obj3);
                    rep.ShowDialog();
                }
                else { MessageBox.Show("ERROR AL GUARDAR", "ALERTA"); }
            }
        }
        //busca al suplente
        private void tbnSuplente_Click(object sender, EventArgs e)
        {
            frmEmpleado_Busqueda busca = new frmEmpleado_Busqueda();
            busca.ShowDialog();
            obj1.Id_Suplente = busca.obj1.Id_Empleado;
            if (obj2.Id_Empleado != obj1.Id_Suplente)
            {
                obj1.Nombre_Suplente = busca.obj1.Nombre + " " + busca.obj1.Apellidos;
                txbSuplente.Text = obj1.Nombre_Suplente;

            }
            else
            {
                MessageBox.Show("ERROR SELECCIONE OTRO EMPLEADO", "ALERTA");
                txbSuplente.Text = "";
            }
        }
        //busca al aprobador
        private void brnAprobado_Click(object sender, EventArgs e)
        {
            frmEmpleado_Busqueda busca = new frmEmpleado_Busqueda();
            busca.ShowDialog();
            obj1.Id_Aprobador = busca.obj1.Id_Empleado;
            if (obj2.Id_Empleado != obj1.Id_Aprobador)
            {
                obj1.Nombre_Aprobador = busca.obj1.Nombre + " " + busca.obj1.Apellidos;
                txbAprobado.Text = obj1.Nombre_Aprobador;

            }
            else
            {
                MessageBox.Show("ERROR SELECCIONE OTRO EMPLEADO", "ALERTA");
                txbAprobado.Text = "";
            }
        }
        //Habilita campos para editar
        private void btnSustituir_Click(object sender, EventArgs e)
        {
            groupBox3.Enabled = true;
            groupBox4.Enabled = true;
            btnAceptar.Visible = true;
            btnSustituir.Visible = false;
            btnSuplente.Visible = true;
            btnAprobado.Visible = true;
        }
        //sale de la forma
        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }
        //realiza el pago de los dias de vacaciones
        private void btnPagar_Click(object sender, EventArgs e)
        {
            if (entra == 2)
            {
                obj2 = MV.ConsultaJefe(obj3.Id_Vacaciones);
                obj3.Dias_Pagar = Convert.ToInt16(txbDiasPagar.Text);
                obj3.Monto_Dia = txbMontoDiario.Text;
                obj3.Monto_Total = txbMontoTotal.Text;
                obj3.Justificacion = txbJustificacion.Text;
                obj3.Fecha_Pago = dateTimePicker1.Value;


                if (validar2() == true)
                {
                    bool resp = MV.PagarDias(obj3.Id_Vacaciones, obj3.Fecha_Pago, obj3.Dias_Pagar, obj3.Monto_Dia, obj3.Monto_Total, obj3.Justificacion, "NORMALES");
                    if (resp)
                    {
                        MessageBox.Show("EL PAGO SE AGREGO CORRECTAMENTE", "AVISO");
                        Close();
                        obj3.Id_Vacaciones_Pago = MV.Max_Id(obj3.Id_Vacaciones, "DIAS");
                        /*
                        frmVacaciones_Reporte_Pagos2 form = new frmVacaciones_Reporte_Pagos2(obj3.Id_Vacaciones_Pago);
                        form.ShowDialog();*/
                    }
                    else
                    {
                        MessageBox.Show("NO SE AGREGO EL REGISTRO", "ALERTA");
                    }
                }
                else { MessageBox.Show("LLENE TODOS LOS CAMPOS", "ALERTA"); }
            }
            else if (entra == 3)
            {
                obj3.Dias_Pagar = Convert.ToInt16(txbDiasPagar.Text);
                obj3.Monto_Dia = txbMontoDiario.Text;
                obj3.Monto_Total = txbMontoTotal.Text;
                obj3.Justificacion = txbJustificacion.Text;
                obj3.Fecha_Pago = dateTimePicker1.Value;

                bool resp = MV.ModificarPago(obj3.Id_Vacaciones_Pago, obj3.Dias_Pagar, obj3.Monto_Dia, obj3.Monto_Total, obj3.Justificacion, obj3.Tipo_Dias, obj3.Fecha_Pago);
                if (resp)
                {
                    MessageBox.Show("SE HAN GUARDADO LAS MODIFICACIONES", "AVISO");
                    Close();
                    obj3.Id_Vacaciones_Pago = MV.Max_Id(obj3.Id_Vacaciones, "DIAS");
                    /*frmVacaciones_Reporte_Pagos2 form = new frmVacaciones_Reporte_Pagos2(obj3.Id_Vacaciones_Pago);
                    form.ShowDialog();*/
                }
                else
                {
                    MessageBox.Show("NO SE PUDIERON GUARDAR LOS CAMBIOS", "ALERTA");
                }
            }
            else if (entra == 4)
            {
                obj1.Fecha_Pago = dateTimePicker1.Value;
                obj1.Dias_Pagar = Convert.ToInt16(txbDiasPagar.Text);
                obj1.Monto_Dia = txbMontoDiario.Text;
                obj1.Monto_Total = txbMontoTotal.Text;
                obj1.Justificacion = txbJustificacion.Text;
                bool resp = MV.PagarDias(obj1.Id_Vacaciones, obj1.Fecha_Pago, obj1.Dias_Pagar, obj1.Monto_Dia, obj1.Monto_Total, obj1.Justificacion, "PENDIENTES");
                if (resp)
                {
                    MessageBox.Show("SE HAN GUARDADO LOS DATOS", "AVISO");
                    Close();
                    obj3.Id_Vacaciones_Pago = MV.Max_Id(obj3.Id_Vacaciones, "DIAS");
                    frmVacaciones_Reporte_Pagos2 form = new frmVacaciones_Reporte_Pagos2(obj3.Id_Vacaciones_Pago);
                    form.ShowDialog();
                }
                else
                {
                    MessageBox.Show("NO SE PUDIERON GUARDAR LOS DATOS", "ALERTA");
                }
            }

        }
        //calcula el monto a pagar
        private void button1_Click(object sender, EventArgs e)
        {
            int Dias_Disponibles;
            if (txbDiasPagar.Text.Trim() != "" && entra != 4)
            {
                obj3.Dias_Pagar = Convert.ToInt16(txbDiasPagar.Text);
                Dias_Disponibles = obj3.Dias_Restantes - obj3.Dias_Programados + obj4.Dias_Pagar;
                if (obj3.Dias_Pagar <= Dias_Disponibles)
                {
                    txbMontoTotal.Text = Math.Round(Convert.ToDouble(txbMontoDiario.Text) * Convert.ToDouble(txbDiasPagar.Text)).ToString();
                }
                else
                {
                    MessageBox.Show("NUMERO DE DIAS INCORRECTO", "ALERTA");
                    txbDiasPagar.Text = "";
                    txbMontoTotal.Text = "";
                }
            }
            else if (txbDiasPagar.Text.Trim() != "" && entra == 4)
            {
                txbMontoTotal.Text = Math.Round(Convert.ToDouble(txbMontoDiario.Text) * Convert.ToDouble(txbDiasPagar.Text)).ToString();
            }
            else { MessageBox.Show("INGRESE LOS DIAS A PAGAR", "ALERTA"); }
        }
        //valida la fecha inresada y el numero de dias insertados
        private void btnValidar_Click(object sender, EventArgs e)
        {
            try
            {
                int Dias_Disponibles;
                int id;

                Dias_Disponibles = obj4.Dias_Restantes - obj3.Dias_Programados + obj4.Dias_Solicitados;

                obj3.Dias_Solicitados = Convert.ToInt16(txBDiasSoli.Text);
                if (obj3.Dias_Solicitados <= Dias_Disponibles)
                {
                    CalculaFechas();
                    id = MV.rango_fechas(obj3.Id_Vacaciones, dTPInicio.Value, dTPFin.Value, entra);
                    if (id != 0 && entra != 0)
                    {
                        MessageBox.Show("FECHAS INCORRECTAS, VERIFIQUE SUS VACACIONES PROGRAMADAS", "ALERTA");
                        txBDiasSoli.Text = "";
                    }
                    else if (id != 0 && entra == 0)
                    {
                        MessageBox.Show("FECHA FIN INCORRECTA, VERIFIQUE SUS VACACIONES PROGRAMADAS", "ALERTA");
                        txBDiasSoli.Text = "";
                    }
                }
                else { MessageBox.Show("NUMERO DE DIAS INCORRECTO", "ALERTA"); }

            }
            catch { MessageBox.Show("INGRESE LOS DIAS SOLICITADOS", "ALERTA"); }
        }


        #endregion

        #region  EVENTOS
        private void frmVacaciones_Validacion_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(btnAceptar, "ACEPTAR");
            toolTip1.SetToolTip(btnSalir, "REGRESAR");
            toolTip1.SetToolTip(btnSustituir, "SUSTITUIR");
            toolTip1.SetToolTip(btnPagar, "PAGAR");
            toolTip1.SetToolTip(btnCalcular, "CALCULAR");
            toolTip1.SetToolTip(btnSuplente, "SUPLENTE");
            toolTip1.SetToolTip(btnAprobado, "APROBADOR");
        }

        private void txbDiasPagar_TextChanged(object sender, EventArgs e)
        {
            txbMontoTotal.Text = "";
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            if (dateTimePicker1.Value < DateTime.Today)
            {
                dateTimePicker1.Value = DateTime.Today;
                MessageBox.Show("FECHA INCORRECTA", "ALERTA");
            }

        }

        private void dTPInicio_ValueChanged(object sender, EventArgs e)
        {
            txBDiasSoli.Text = "";

            objD2.Fecha_Dia_Inhabil = MDI.fecha_diaInhabil(dTPInicio.Value);

            if (objD2.Fecha_Dia_Inhabil != DateTime.MinValue && entra == 1)
            {

                MessageBox.Show("ERROR VERIFIQUE SI LA FECHA ES CORRECTA", "ALERTA");
            }

        }

        private void txBDiasSoli_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int Dias_Disponibles;
                int id;

                Dias_Disponibles = obj4.Dias_Restantes - obj3.Dias_Programados + obj4.Dias_Solicitados;

                obj3.Dias_Solicitados = Convert.ToInt16(txBDiasSoli.Text);
                if (obj3.Dias_Solicitados <= Dias_Disponibles)
                {
                    CalculaFechas();
                    id = MV.rango_fechas(obj3.Id_Vacaciones, dTPInicio.Value, dTPFin.Value, entra);
                    if (id != 0 && entra != 0)
                    {
                        MessageBox.Show("FECHAS INCORRECTAS, VERIFIQUE SUS VACACIONES PROGRAMADAS", "ALERTA");
                        txBDiasSoli.Text = "";
                    }
                    else if (id != 0 && entra == 0)
                    {
                        MessageBox.Show("FECHA FIN INCORRECTA, VERIFIQUE SUS VACACIONES PROGRAMADAS", "ALERTA");
                        txBDiasSoli.Text = "";
                    }
                }
                else
                {
                    MessageBox.Show("NUMERO DE DIAS INCORRECTO", "ALERTA");
                    txBDiasSoli.Text = "";
                }

            }
            catch { MessageBox.Show("INGRESE LOS DIAS SOLICITADOS", "ALERTA"); }
        }

        private void txbDiasPagar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txbMontoDiario_KeyPress(object sender, KeyPressEventArgs e)
        {
            txbMontoTotal.Text = "";
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txbMontoTotal_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txBDiasSoli_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        #endregion  
    }
}
